export default class TableBase {
    constructor({page, areaId, tableType}) {
        this.table = page.props[tableType];
        this.areaId = areaId;
    }


    /**
     * 设置表格所有行数据
     * @param {Object} data 渲染数据 Object
     * @param {boolean} isTop 数据是否置顶，默认是true 置顶
     */
    setAllTableData(data, isTop){
        this.table.setAllTableData(this.areaId, data, isTop);
    }

    /**
     * 取得表格所有行数据
     */
    getAllTableData(){
        this.table.getAllTableData(this.areaId);
    }

    /**
     * 设置表格某一列渲染函数
     * @param {String} key 列表头键
     * @param {Function} rende 渲染函数
     */
    setTableRender(key, rende){
        this.table.setTableRender(this.areaId, key, rende);
    }

    /**
     * 获取选中行数据
     */
    getCheckedRows(){
        this.table.getCheckedRows(this.areaId);
    }

    /**
     * 根据主键值更新表格行数据
     * @param {String} PKField 主键字段编码
     * @param {Object} data 新数据
     */
    updataTableRowsByPK(PKField, data){
        let tableData = this.table.getAllTableData(this.areaId);
        let deleteIndexs=[];
        tableData.rows.forEach((one, index)=>{
            if(PKValues.indexOf(one.values[PKField].value)>-1){0
                deleteIndexs.push(index);
            }
        })
    }

    /**
     * 根据主键值删除表格行数据
     * @param {String} PKField 主键字段编码
     * @param {String[]} PKValues 要删除的主键值数组
     */
    deleteTableRowsByPK(PKField, PKValues){
        let tableData =  this.table.getAllTableData(this.areaId);
        let deleteIndexs=[];
        tableData.rows.forEach((one, index)=>{
            if(PKValues.indexOf(one.values[PKField].value)>-1){
                deleteIndexs.push(index);
            }
        })
        deleteIndexs.length && this.table.deleteTableRowsByIndex(this.areaId, deleteIndexs);
    }
}